/* 
 * File:   FileObjects.h
 * Author: lgr013
 *
 * Created on 8 de septiembre de 2014, 21:37
 */

#ifndef FILEOBJECTS_H
#define	FILEOBJECTS_H

#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <JSON/json.hh>
#include <string>
#include <cstdint>
#include <cmath>
#include <cctype>
#include "../Controller/SBSLog.h"


using namespace std;

class FileObjects {

private:
    string type;
    int xCoordinate;
    int yCoordinate;
    int width;
    int height;
    string color;
    float rotation;
    int mass;
    bool staticObj;
    
    int sides; //cantidad de lados para el poligono
    float scale; //radio del poligono y del circulo
    
    int base; //base del paralelogramo
    int highParall; //altura del paralelogramo
    float angle1; // angulo del paralelogramo
    
    //int base2; //base menor del trapecio
    float angle2;//angulo BETA del trapecio
    
//    float screenAspectX;
//    float screenAspectY;
   
    

public:
    
    FileObjects();
    virtual ~FileObjects();
    
    //Getters
    string getType();
    int getXCoordinate();
    int getYCoordinate();
    int getWidth();
    int getHeight();
    uint8_t getColorR();
    uint8_t getColorG();
    uint8_t getColorB();
    uint8_t getColorA();
    float getRotation();
    int getMass();
    
    int getBase();
    float getAngle1();
    float getAngle2();
    //int getBase2();
    int getHighParall();
    int getSides();
    float getScale();
    float getRadio();
    
    //Setters
    void setType(string tipo);
    void setXCoordinate(int poscx);
    void setYCoordinate(int poscy);
    void setWidth(int ancho);
    void setHeight(int alto);
    void setColor(string color);
    void setRotation(int rotRadianes);
    void setMass(int masa);
    void setStatic(bool estatico);

    void setBase(int base);
    void setHighParall(int altura);
    void setAngle1(float alpha);

    //Funciones 
    bool assignObject(JSON::Object things, FileObjects &fo,int screenPixelX, int screenPixelY, int screenLogicX, int screenLogicY);
    bool isStatic();
    string makeUpperCase (string stringlowcase);
    bool validateColor(string colorParseado);

    

};

#endif	/* FILEOBJECTS_H */

